Skip to content

🚀 Windows 项目部署到 Linux 全流程指南

1. 前端部署 (Vue/React)

  • 本地操作:运行 npm run build
  • 上传路径:将生成的 dist 目录下的所有文件上传至 Linux 的 /usr/share/nginx/html(或其他你指定的绝对路径)。
  • 权限修正:执行 chmod -R 755 /usr/share/nginx/html,确保 Nginx 进程有权读取。
  • Nginx 核心配置
    • root 使用绝对路径。
    • try_files $uri $uri/ /index.html; 解决刷新页面 404 问题。

2. 后端部署 (Spring Boot)

  • 本地操作:使用 Maven 打包生成 .jar 文件。

  • 上传路径:建议放在 /home/project/ 等自定义目录下。

  • 后台启动

    Bash

    # 2>&1 的意思是把错误信息(2)也扔到标准输出(1)指向的那个 log 文件里
    nohup java -jar your-project.jar --server.port=8080 > output.log 2>&1 &
  • 管理进程

    • 查看:ps -ef | grep java
    • 停止:kill -9 [PID]

3. 数据库部署 (MySQL)

  • 导出:在 Windows 用 Navicat 或命令行导出 .sql 文件。

  • 上传与导入

    Bash

    # 登录并进入交互模式
    mysql -u root -p
    # 切换库并导入
    use your_db_name;
    source /path/to/your.sql;
  • 权限与加密(针对 MySQL 8.0+):

    SQL

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
    FLUSH PRIVILEGES;

4. Nginx 反向代理 (核心桥梁)

  • 匹配前缀:通常匹配 /api/ 转发给后端。
  • 路径截断:如果 proxy_pass 结尾带 /,会自动去掉匹配路径(如 /api/)。
  • 配置文件位置/etc/nginx/nginx.conf/etc/nginx/conf.d/ 目录。

5. Linux 环境“排坑”三件套

部署后如果无法访问,请按此顺序检查:

  1. SELinux
    • 检查:getenforce
    • 放行:setsebool -P httpd_can_network_connect 1
  2. 防火墙 (Firewalld)
    • 开放 80 端口:firewall-cmd --zone=public --add-port=80/tcp --permanent
    • 生效:firewall-cmd --reload
  3. 错误日志(终极手段):
    • Nginx 报错:tail -f /var/log/nginx/error.log
    • Jar 包报错:tail -f your-output.log

💡 查阅小贴士

  • 改端口无需重打包:启动 Jar 包时使用 --server.port=新端口 即可。
  • 改域名无需重打包:修改 Nginx 的 server_namereload
  • 多项目管理:一个项目对应 conf.d/ 下的一个 .conf 文件,不要全挤在 nginx.conf